package com.njtech.pet.service;

import com.njtech.pet.entity.Message;
import com.njtech.pet.entity.User;
import com.njtech.pet.vo.MessageShow;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Author:gm
 * Date:2020-03-22 20:26
 * Description:<描述>
 */


public interface MessageService {
    /**
     * 插入一条记录
     * @param message 新纪录
     * @return 修改行数
     */
    int insert(Message message);

    /**
     * 修改一条记录的state状态
     * @param message 新纪录，封装了id和新状态
     * @return 修改行数
     */
    int updateMessageStateByMessageId(Message message);

    /**
     * 根据一对用户（2人）和起止日期查找聊天记录, sender和receiver是等价的参数
     * @param sender 发送消息的用户
     * @param receiver 接受消息的用户
     * @param beginDate 起日期，可NULL，日期格式 "yyyy-MM-dd HH:mm:ss"
     * @param endDate 止日期，可NULL，日期格式 "yyyy-MM-dd HH:mm:ss"
     * @return 记录集合
     */
    List<Message> selectByCoupleUsersBetweenDates(@Param("sender") User sender, @Param("receiver")User receiver, @Param("beginDate") String beginDate, @Param("endDate") String endDate);


    /**
     * 用于消息列表显示
     * @param uid
     * @return
     */
   List<MessageShow> selectUnRead(Integer uid);

    /**
     * 查找一对用户所有的消息
     * @param sid  当前用户
     * @param rid  对方用户
     * @return     消息集合
     */
    List<Message> selectAll(Integer sid,Integer rid);

    /**
     * 查找当前用户的未读消息：包括好友消息和通讯信息
     * @param uid
     * @return
     */
    String longSearch(Integer uid);

    /**
     * 点击一个好友进入当前用户和好友的对话框时，将未读message的状态修改
     * @param uid   当前操作的用户id
     * @param rid  对方id
     * @return
     */
     String changeState(Integer uid,Integer rid);

    /**
     * 找A===》B的最近一条未读message
     * @param sid  发送方id
     * @param rid
     * @return
     */
     Message findAMessageByBoth(Integer sid,Integer rid);
}
